/**
 * 区域导航、调试开关
 */
var _EsdDynamicTransformationScript={};
_EsdDynamicTransformationScript.navBlock = {}; // 定义区域跳转类
_EsdDynamicTransformationScript.navBlock.selector = {};

// 快捷键定义区
// key = {};

// key.top = "alt+1"; // (top)
// key.nav = "alt+2"; // (nav)
// key.main = "alt+3"; // (main)
// key.content = "alt+4"; // (content)
// key.left = "alt+5"; // (left)
// key.right = "alt+6"; // (right)
// key.footer = "alt+7"; // (footer)
// key.down = "alt+8"; // (down)
// key.up = "alt+9"; // (up);

var navBlock = function(selector) {
	var sIndex = -1; // 当前栏目下标
	var maxIndex = -1; // 保存目前所有class="navBlock"的区域块总数量，栏目总量下标。
	var minIndex = 0; // 栏目数量起始下标
	var debug = true; // 是否是调试模式，调试模式有红边线，非调试模式关闭红边框
	var activate = ".navBlock"; // 激活的采用class因为会激活多个
	// 导航跳转
	var keyShowSelect = function(i) {
		$(activate).each(function(index, el) {
			if (i == index) {
				debugView(el);
				$(el).find("a").each(function(i, e) {
					if (i == 0) {
						$(e).focus();
					}
				});

			}
		});
	}

	// 获取所有class=navBlock的区域的总数量，初始化轮训所有需要跳转的块
	$(activate).each(function(index, ehx) {
		maxIndex++;
	});

	// 快捷键功能区域
	// 跳转到头部alt+1(49)
	$(document).keydown(function(e) {
		if (e.altKey && e.keyCode == 49) {
			keySelectScroll(selector.top);
		}
		// 跳转到导航alt+2(50)
		else if (e.altKey && e.keyCode == 50) {
			keySelectScroll(selector.nav);
		}
		// 跳转到主要区域alt+3(51)
		else if (e.altKey && e.keyCode == 51) {
			keySelectScroll(selector.main);
		}
		// 跳转到正文区域alt+4(52)
		else if (e.altKey && e.keyCode == 52) {
			keySelectScroll(selector.content);
		}
		// 跳转到左区域alt+5(53)
		else if (e.altKey && e.keyCode == 53) {
			keySelectScroll(selector.left);
		}
		// 跳转到右区域alt+6(54)
		else if (e.altKey && e.keyCode == 54) {
			keySelectScroll(selector.right);
		}
		// 跳转到底部alt+7(55)
		else if (e.altKey && e.keyCode == 55) {
			keySelectScroll(selector.footer);
		}
		// 前进alt+8(56)
		else if (e.altKey && e.keyCode == 56) {
			if (sIndex < maxIndex) {
				sIndex++;
				keyShowSelect(sIndex);
			}
		}
		// 后退alt+9(57)
		else if (e.altKey && e.keyCode == 57) {
			if (sIndex > minIndex) {
				sIndex--;
				keyShowSelect(sIndex);
			}
		}
	});

	// 特定区域跳转
	var keySelectScroll = function(id) {
		if ($(id).length > 0) {
			appendIns(id, true);// 插入ins
			debugView(id);
			$(id).find("a").each(function(index) {
				if (index == 0) {
					$(this).focus();
				}
			});
			appendIns(id, false);// 清楚ins
		} else {
		}

	}
	// 为了解决漂浮高等于0的情况下区域显示是一条线
	var appendIns = function(id, b) {
		if (b == true) {
			$(id).append("<ins id='esdNavBlockIns' style='clear: both;display: block;'></ins>")
		} else {
			$("#esdNavBlockIns").remove();
		}
	}

	if (debug == true) {
		// 如果开启调试模式，添加调试绘制矩形边线
		$("body").append("<div id='show_top' class='lineshow'></div>");
		$("body").append("<div id='show_bottom' class='lineshow'></div>");
		$("body").append("<div id='show_left' class='lineshow'></div>");
		$("body").append("<div id='show_right' class='lineshow'></div>");
		$(".lineshow").css({
			"display" : "none"
		});
	}
	// 开启调试模式后会显示红边
	var debugView = function(e) {
		if (debug == true) {
			var x = $(e).offset();
			// var w = parseInt($(e).css("width"));
			var w = $(e).outerWidth();// 返回元素的宽度（包含 padding 和 border）
			// var h = parseInt($(e).css("height"));
			var h = $(e).outerHeight();// 返回元素的高度（包含 padding 和 border）
			$("#show_top").css({
				"z-index" : "9999",
				"border" : "red 2px solid",
				"position" : "absolute",
				"top" : x.top,
				"left" : x.left,
				"width" : w,
				"height" : "0px"
			});
			$("#show_bottom").css({
				"z-index" : "9999",
				"border" : "red 2px solid",
				"position" : "absolute",
				"top" : x.top + h,
				"left" : x.left,
				"width" : w,
				"height" : "0px"
			});
			$("#show_left").css({
				"z-index" : "9999",
				"border" : "red 2px solid",
				"position" : "absolute",
				"top" : x.top,
				"left" : x.left,
				"width" : "0px",
				"height" : h
			});
			$("#show_right").css({
				"z-index" : "9999",
				"border" : "red 2px solid",
				"position" : "absolute",
				"top" : x.top,
				"left" : x.left + w,
				"width" : "0px",
				"height" : h
			});
			$("html,body").animate({
				scrollTop : $("#show_top").offset().top-100
			});
			$(".lineshow").css({
				"display" : "block"
			});
		}
	}
}
navBlock(_EsdDynamicTransformationScript.navBlock.selector);
